home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / examples.zoo / misc / parallel.lsp < prev    next >
Lisp/Scheme  |  1991-10-22  |  1KB  |  33 lines

  1. ; Verarbeitung pseudoparalleler Prozesse, Michael Stoll, Nov. 1987
  2.  
  3. (setq parallelfuns '(parallelfuns scheduler function_1 function_2))
  4.  
  5. (defun scheduler (&rest list-of-functions)
  6.   (let ((alist (mapcar #'list list-of-functions)))
  7.     (do ((lof list-of-functions (if (rest lof) (rest lof) list-of-functions)))
  8.         (nil)
  9.       (let* ((fun (first lof))
  10.              (ass (assoc fun alist :test #'eq))
  11.              (vars (rest ass)))
  12.         (setf (rest ass) (if vars (funcall fun t vars) (funcall fun nil nil)))
  13. ) ) ) )
  14.  
  15. (defun function_1 (flag vars)
  16.   (do ((count1 10 (1- count1))
  17.        (count2 (if flag (first vars) (char-code #\A))
  18.                (if (= count2 (char-code #\Z)) (char-code #\A) (1+ count2))))
  19.       ((zerop count1) (list count2))
  20.     (write-char (code-char count2))
  21. ) )
  22.  
  23. (defun function_2 (flag vars)
  24.   (do ((count1 7 (1- count1))
  25.        (count2 (if flag (first vars) (char-code #\0))
  26.                (if (= count2 (char-code #\9)) (char-code #\0) (1+ count2))))
  27.       ((zerop count1) (list count2))
  28.     (write-char (code-char count2))
  29. ) )
  30.  
  31. ; (scheduler #'function_1 #'function_2) aufrufen.
  32.  
  33.